import carImg from "@/assets/threeJs/images/carRed.png"
import * as Cesium from 'cesium'
import {getUserAndGpsInfoByIDsUtc, getVehiclePositionDeviceList} from "@/api/threeJs/threeJsApi";

let objectIdArr = []

function createVehiclePositioning(viewer: object) {
// 车辆实体
    getVehiclePositionDeviceList().then(res => {
        res.data.forEach(item => {
            objectIdArr.push(item.objectid)
            getUserAndGpsInfoByIDsUtc({vehicleIdentification: item.objectid}).then(rel => {
                viewer.entities.add({
                    id: item.objectid,
                    name: 'carRed',
                    position: Cesium.Cartesian3.fromDegrees(+rel.data.Longitude, +rel.data.Latitude), // 初始位置
                    billboard: {
                        // 设置广告牌的显示位置
                        verticalOrigin: Cesium.VerticalOrigin.TOP,
                        // 设置广告牌的显示位置
                        horizontalOrigin: Cesium.HorizontalOrigin.CENTER,
                        image: carImg,
                        width: 25,
                        height: 25,
                        // // 控制最小和最大像素尺寸
                        // minimumPixelSize: 0,  // 最小显示尺寸(像素)
                        // maximumScale: 0,     // 最大缩放比例
                        // distanceDisplayCondition: new Cesium.DistanceDisplayCondition(
                        //     0,    // 最小可见距离(米)
                        //     15000 // 最大可见距离(米)
                        // )
                    },
                });
            })
        })
    })
    setInterval(() => {
        changePos(viewer)
    }, 60000)
}

function changePos(viewer) {
    objectIdArr.forEach(item => {
        getUserAndGpsInfoByIDsUtc({vehicleIdentification: item}).then(res => {
            viewer.entities.getById(item).position = Cesium.Cartesian3.fromDegrees(+res.data.Longitude, +res.data.Latitude);
            // console.log('修改成功')
        })
    })
}

function carViewPositioning(viewer, objectId) {
    let obj = viewer.entities.getById(objectId)
    viewer.flyTo(obj,
        {
            duration: 2, // 飞行持续时间（秒）
            maximumHeight: 2000, // 飞行过程中的最大高度（米）
            offset: {
                heading: Cesium.Math.toRadians(0), // 航向角（弧度）
                pitch: Cesium.Math.toRadians(-90), // 俯仰角（弧度），-90表示从正上方看
                range: 1000 // 与实体的距离（米）
            }
        }
    );
}

export {createVehiclePositioning, carViewPositioning}
